
/**********************************
 * class Articles
 * 命令: #<sysId>/<clsId>/add|modify|remove|listJson|detailJson
 */
(function(){

/**
 * 构造函数
 */
// 数据类型说明:                          string,[string,string],[string,string,....],int
var Articles = window.Articles = function( exeFile,selfOps,parentOps,childOps )
{
    // 驱动属性
    this.procFile = exeFile;

		this.selfOps = selfOps;
    this.parentOps= parentOps;
    this.childOps = childOps;

    this.UIL = new ArticleUIL();
}

Articles.fn = Articles.prototype =
{
    /**
     * 添加文章界面,news_"+this.clsId+"_add
     */
    add : function(cmd,dispObj)
    {
        var page = this.UIL.add();

        // 分类选择框
        if( 0 != cmd["catId"] ){
        		var strCmd = this.procFile.concat( "?view=",cmd["view"],"&op=",this.parentOps["details"],"&id=",cmd["catId"] );
            Categories.SelectOption( strCmd,page.find('.selectOptions') );
        }else{
        		var strCmd = this.procFile.concat( "?view="+cmd["view"],"&op=",this.parentOps["list"],"&id=0" );
            Categories.SelectOptions( strCmd,page.find('.selectOptions'), 0 );
        }

        dispObj.append( page );                 // 添加到可视区域
        frm = page.find('.frm');
        frm[0].action = this.procFile.concat("?",cmd.toString() );
        this.submit_add( frm );   // 监听提交

        // 添加编辑器
        //page.find("[name='content']").fckHtmlEditor( "editors/fckeditor/", 400, "Basic" );
    },
    submit_add : function( frm )
    {
        frm.ajaxSubmit('json',App.ui.popupAlert);
    },

    /**
     * 页面
     */
    remove : function( cmd,ops )
    {
    	///alert( ops["remove"] );
        // 读取数据
        var _ = this;
        var page = _.UIL.remove();
        var dispObj = App.ui.popupWrap.clone(true);
        App.ui.content.append( dispObj.append(page) );
        page.find(".cancel").click( function(){dispObj.remove();} );   //绑定取消按钮
        page.find(".ok").click(function(){
            dispObj.remove();
            var frm = App.ui.content.find(".frm");
            frm.attr("action", _.procFile.concat("?view=",cmd["view"],"&op=",ops["remove"]) );
            _.submit_remove( frm );      //绑定提交事件
        });
    },
    submit_remove : function( frm )
    {
        frm.ajaxSubmit('json',this.submit_remove_callback); //绑定事件
        frm.submit();                             //提交表单
        frm.unbind("submit");                     //消除本函数被反复调用造成的反复绑定
    },
    submit_remove_callback : function(resultContent)
    {
        App.ui.popupAlert(resultContent);
        Articles.fn.removeCheckedItems( App.ui.content.find(".frm") );
    },

    /**
     * 修改文章页面
     */
    modify : function(cmd,dispObj)
    {
        // 读取数据
        var _ = this;
        var page;
        $.getJSON( _.procFile.concat("?view=",cmd["view"],"&op=",_.selfOps["details"],"&id=",cmd["id"] ), function( json ){
            var page = _.UIL.modify(json);
            dispObj.append( page );

            var frm = page.find(".frm");
            frm[0].action = _.procFile.concat("?",cmd.toString());
            _.submit_modify( frm );
        });
    },
    submit_modify : function( frm )
    {
        frm.ajaxSubmit('json',App.ui.popupAlert);
    },

    /**
     * 移动文章页面
     */
    move : function(cmd)
    {
        // 读取数据
        var _ = this;
        var page = _.UIL.move();
        var dispObj = App.ui.popupWrap.clone(true);
        App.ui.content.append( dispObj.append(page) );
        page.find(".cancel").click( function(){dispObj.remove();} );   //绑定取消按钮
        page.find(".ok").click(function(){
            dispObj.remove();
            var frm = App.ui.content.find(".frm");
            frm.attr("action", _.procFile.concat("?view=",cmd["view"],"&op=",_.selfOps["move"]) );
            _.submit_remove( frm );      //绑定提交事件
        });

        // 读取分类
        var strCmd = this.procFile.concat( "?view="+cmd["view"],"&op=",this.parentOps["list"],"&id=0" );
        Categories.SelectOptions( strCmd,page.find('.selectOptions'), cmd["catId"],_.catChange );
    },
    submit_move : function( frm )
    {
        frm.ajaxSubmit('json',submit_move_callback); //绑定事件
        frm.submit();                                //提交表单
        frm.unbind("submit");                        //消除本函数被反复调用造成的反复绑定
    },
    submit_move_callback : function(resultContent)
    {
        App.ui.popupAlert(resultContent);
        Articles.fn.removeCheckedItems( App.ui.content.find(".frm") );
    },

    /**
     * 文章详细页面
     */
    get_details : function(cmd,dispObj)
    {
        // 读取数据
        var _ = this;
        var page;
        $.getJSON( _.procFile.concat("?"+cmd.toString()), function( json ){
            dispObj.append( _.UIL.get_details(json) );
        });
    },


    /**
     * 文章列表页面
     */
    get_list : function(cmd,dispObj)
    {
        // 读取数据
        var _ = this;
        $.getJSON( "{0}?{1}&options=OrderDESC".format( _.procFile,cmd.toString() ), function( json ){
            var page = _.UIL.get_list(json,cmd,_.selfOps,_.childOps);
            page.find(".frm").find("input[@name='ids']").checkAll( $(".btnCheckAll") );  // 绑定 全选|全不选 事件
            $(".btnRemove").click(function(){          //绑定删除事件
                _.remove( cmd,_.selfOps );
                return false;
            });
            $(".btnMove").click(function(){            //绑定移动事件
                _.move(cmd);
                return false;
            });
            dispObj.append( page );
        });
    },

    /**
     * 以下是private函数
     */
    removeCheckedItems : function( frm )
    {
        var del = frm.find("input[@name='ids']");
        for( var i=0,len=del.length;i<len;i++ ){
            if( $(del[i]).attr("checked") == true ){
                $(del[i]).parent().remove();
            }
        }
    },
    catChange : function( selectObj )
    {
        var page = App.ui.content.find(".frm");
        page.find("input[@name='new_cat_id']").attr("value",selectObj.val());
    }

}//class Articles.fn


Articles.ui = {
    toolbarInList : function(view,ops,catId)
    {
        return '<div> \
                  <a class="btnAdd" href="#view={0}&op={1}&catId={2}" title="添加文章">添加文章</a> —\
                  <a href="#" class="btnCheckAll" title="全选/全不选">全选</a> -\
                  <a href="#{0}/" title="生成静态页面"></a> \
                  <a href="#" class="btnMove" title="移动">移动</a> -\
                  <a href="#" class="btnRemove" title="删除">删除</a> \
                </div> \
                <div class="divider"></div> '.format( view,ops["add"],catId );
    },

    toolbarInDetail : function(view,ops,id)
    {
        return '<div>\
                    <a class="btnModify" href="#view={0}&op={2}&id={1}" title="修改">修改</a>\
                    <a class="btnRemove" href="#view={0}&op={3}&id={1}" title="删除"></a>\
                </div>\
                <div class="divider"></div>'.format( view,id,ops["modify"],ops["remove"] );
    },

    toolbarInModify : function(view,ops,id)
    {
        return '<a class="btnDetail" href="#view={0}&op={2}&id={1}" title="阅读详细">阅读</a>\
                <div class="divider"></div>'.format( view,id,ops["details"] );
    }
};

})();
